home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / misc / drftcite.sty < prev    next >
Text File  |  1995-03-09  |  8KB  |  192 lines

  1. %     D R F T C I T E . S T Y
  2. %
  3. %     version 3.4  (Jul 1994)
  4. %
  5. %     Print the tags instead of the numbers for \cite.
  6. %     See also CITE.STY and OVERCITE.STY.
  7. %
  8. %     Copyright (C) 1989,1991,1992,1993,1994 by Donald Arseneau
  9. %     These macros may be freely transmitted, reproduced, or modified for
  10. %     non-commercial purposes provided that this notice is left intact.
  11. %
  12. %  Use the label instead of the number for citations, as if you had used
  13. %  \bibitem[name]{name}..., but write the proper citation number to the aux
  14. %  file. Ignore spaces before the \cite, inserting an ordinary interword
  15. %  space.  Also ignore spaces after commas in the input list.  This package
  16. %  is particularly useful for draft (draught) versions of documents that
  17. %  will eventually use cite.sty or overcite.sty.
  18. %
  19. %  This also keeps track of the order of first-citations in the text for
  20. %  easy sorting (in lieu of BibTeX).  To omit this counting...
  21. %  in LaTeX 2.09: declare \nocitecount before the first \cite; or, for 
  22. %    a more permanent removal, comment-out the lines ending with %%o below, 
  23. %    and omit everything following the line that begins with %%o.
  24. %  in LaTeX2e: specify \usepackage[nocitecount]{drftcite}, or perform the
  25. %    editing described above.
  26. %
  27. %  Drftcite keeps track of which references were cited, and issues warnings
  28. %  for bibliography items that were never cited in the text.
  29. %
  30. %  The characters <>|_{}\ are not present in the roman fonts, so if you use
  31. %  them in identifiers, they will have to be typeset in typewriter style.
  32. %  To do this,...
  33. %  with LaTeX 2.09: un-comment two lines in the definition of \@citeverb.
  34. %  with LaTeX2e: specify \usepackage[tt]{drftcite}
  35. %
  36. %  `Citation...undefined' warnings are only given once per undefined
  37. %  citation name.  In the text, missing numbers are represented with a
  38. %  bold `name?'.   To restore multiple warnings...
  39. %  for LaTex 2.09: edit: "delete this line to issue warnings always"
  40. %  for LaTeX2e: specify \usepackage[verbose]{drftcite}
  41. %
  42. %  This version of drftcite can co-exist with chapterbib.sty (version 1.4
  43. %  or later).  
  44. % ........................
  45.  
  46. %  \citen gives the citation tag in the text and writes the aux file entry.
  47. %  Use \citen to give citation name without the other formatting; e.g., 
  48. %  "See also ref.~\citen{junk}" gives "See also ref. junk".
  49. %
  50. \edef\citen{\noexpand\protect \expandafter\noexpand\csname citen \endcsname}
  51.  
  52. \@namedef{citen }#1{%
  53. \edef\@tempa{\@ignspaftercomma,#1, \@end, }% ignore spaces in parameter list.
  54. \edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}%
  55. \if@filesw \immediate\write \@auxout {\string\citation {\@tempa}}\fi
  56. \def\@citea{}%
  57. \@for \@citeb:=\@tempa\do {\@citea
  58.   \@ifundefined {b@\@citeb\@extra@b@citeb}%
  59.     {{\bf \@citeverb{\@citeb}?}%% issue warning only for first mis-use:
  60.      \@dftc@ifund {DCN@\@citeb\@extra@b@citeb}{% delete this line to issue warnings always
  61.      \@warning {Citation `\@citeb' on page \thepage\space undefined}%
  62.      }{}% delete this line to issue warnings always
  63.     }% else, defined
  64.     {\hbox{\@citeverb{\@citeb}}}%
  65.   \def\@citea{,\ }\@advancecitecount
  66.   }}
  67.  
  68. % for ignoring spaces in the input:
  69. \def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else
  70.    #1,\expandafter\@ignspaftercomma\fi}
  71. \def\@ignendcommas,#1,\@end{#1}
  72.  
  73. % Make \cite robust. 
  74. %
  75. \edef\cite{\noexpand\protect\expandafter\noexpand\csname cite \endcsname}
  76.  
  77. \@namedef{cite }{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
  78.  
  79. %  Make \@citex refer to \citen:
  80. %  (Put a single space before the output)
  81. %
  82. \def\@citex[#1]#2{\leavevmode\unskip
  83.    \ \@cite{\citen{#2}}{#1}\spacefactor\@m}%
  84. %
  85. %  Give the citation tag as the label (even if another label is specified)
  86. %
  87. \def\@lbibitem[#1]#2{\global\@HighCite\z@
  88.   \item[\@biblabel{%
  89.    \@ifundefined{DCN@#2\@extra@b@citeb}{\@warning {Reference `#2' on page \thepage\space 
  90.     was never cited}}{}%
  91.    \DC@llap{$^{\@nameuse{DCN@#2\@extra@b@citeb}}$\ \ }%%o
  92.    \@citeverb{#2}}\hfil]\if@filesw
  93.    {\def\protect##1{\string ##1\space}%
  94.    \immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
  95.  
  96. \def\@bibitem#1{\refstepcounter{\@listctr}\@lbibitem[\the\value{\@listctr}]{#1}}
  97.  
  98. %  make the special characters in the citation tag printable
  99. %
  100. \def\@citeverb#1{%
  101.  {\@dftc@tt {% to get characters <>_|{}
  102.    \expandafter \expandafter \expandafter \@gobble  %  do \csname, \string, ...
  103.    \expandafter \string\csname#1\endcsname}%        %  \@gobble, in that order.
  104. }}% 
  105.  
  106. %   \@extra@b@citeb is a hook for other style files to further specify
  107. %   citations; for example, to number by chapter.
  108. %   In case no fancy bib package (chapterbib) defines it:
  109.  
  110. \@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{}
  111.  
  112. %------------------------------------
  113. %   Handle optional variations:
  114.  
  115. \def\@dftc@tt{} % use normal text by default
  116. % \def\@dftc@tt{\tt}% uncomment this line to make \tt the default
  117.  
  118. \def\nocitecount{%
  119.   \def\@advancecitecount{\global\@namedef{DCN@\@citeb\@extra@b@citeb}{}}%
  120.   \let\DC@llap\@gobble}
  121. \nocitecount % in case what follows gets removed
  122.  
  123. \newcount\@HighCite \global\@HighCite\z@
  124.  
  125. \let\@dftc@ifund\@ifundefined
  126.  
  127. \@ifundefined{DeclareOption}{}%
  128. { \DeclareOption{nocitecount}{\endinput}
  129.   \toks@={\def\@dftc@ifund#1#2#3{#2}}
  130.   \DeclareOption{verbose}{\the\toks@}
  131.   \DeclareOption{tt}{\def\@dftc@tt{\tt}}
  132.   \ProcessOptions }
  133.  
  134. % The rest deals only with counting, and can be removed if counting is never
  135. % desired.
  136.  
  137. \let\DC@llap=\llap
  138. %
  139. %     count the citations as they appear in the text
  140. %
  141. \def\@advancecitecount{\@ifundefined {DCN@\@citeb\@extra@b@citeb}%
  142. {\global\advance\@HighCite\@ne 
  143. \expandafter\xdef\csname DCN@\@citeb\@extra@b@citeb\endcsname{\the\@HighCite}}%
  144. {}}
  145. %
  146. %  The remainder handles (counting over) input files skipped by \includeonly.
  147. %  It adds code to LaTeX's \include to re-read the .aux file checking the 
  148. %  \citation commands.
  149. %
  150. %  For included files that are skipped (not listed by \includeonly)
  151. %  input the .aux file ignoring all commands but \citation, which
  152. %  does \@advancecitecount (keeps count of the citations).
  153. %
  154. \let\@dftc@include\include
  155. \def\include#1{\relax
  156.  \ifx\DC@llap\llap \begingroup % do counting only if wanted
  157.   \@ifundefined{cp@#1}{}% don't do if .aux file not there!
  158.    {\toks@\expandafter\expandafter\expandafter{\csname cp@#1\endcsname}%
  159.    \expandafter\xdef\csname cp@#1\endcsname{\the\toks@
  160.     \noexpand\@dftc@auxcite{#1}}}%
  161.  \endgroup\fi \@dftc@include{#1}}
  162. %
  163. \def\@dftc@auxcite#1{\begingroup % disable everything but \citation
  164.   \let\bibcite\@gobbletwo \let\newlabel\@gobbletwo \let\@writefile\@gobbletwo
  165.   \let\bibdata\@gobble \let\bibstyle\@gobble % already \@gobble normally
  166.   \def\citation##1{\@for\@citeb:=##1\do {\@advancecitecount}}%
  167.   \makeatletter\@input{#1.aux}\endgroup 
  168. }
  169. \endinput
  170. %
  171. %  [This file is named "drftcite" because "draftcite" is too long a name for
  172. %   some computers.  Sorry to those who use the spelling "draught."  I could
  173. %   have abbreviated the name by selecting the shared letters in "draft" and
  174. %   "draught," but "dratcite" somehow conveys the wrong meaning.]
  175. %
  176. % Version 1991: Ignore spaces after commas in the parameter list. Create
  177. % \nocitecount to turn off counting the order of citations.
  178. % Version 3.1 (1992): protect \cite and \citen. (There is no version 3.0)
  179. % Version 3.2 (1993): Supress repetitions of warning messages.  Include
  180. % \@extra@b@citeb hook for chapterbib.sty.  Make \include handle case that
  181. % \cp@FOO was not defined.
  182. % Version 3.3 (1993): Fix \nocitecount. Change printing of undefined refs.
  183. % Version 3.4 (1994): LaTex2e support, including spaces in protected command 
  184. % names; better chapterbib support.
  185. %
  186. % Send problem reports to asnd@Reg.triumf.ca
  187. %
  188. % Test integrity of file:
  189. % brackets:  round, square, curly, angle:   () [] {} <>
  190. % backslash, slash, vertical, at, dollar, and: \ / | @ $ &
  191. % hat, grave, acute (apostrophe), quote, tilde, under:   ^ ` ' " ~ _
  192.